/*
 * Copyright (c) 2023 IUV Inc. All rights reserved.
 * 项目名称：IUV TXY
 * 文件名：RegistController.java
 * Date：23-10-10 下午2:09
 * Author：Will
 */

package com.iuv.baike.controller;

import com.iuv.baike.common.CommonOperateCode;
import com.iuv.baike.dto.BelongInfo;
import com.iuv.baike.service.DemoBaikeBelongService;
import com.iuv.baike.util.RespondUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.Map;

/**
 * BaiKeBelongController
 * 注册控制器
 *
 * @author Will
 * @date 16:33
 */

/**
 * TODO 问题一 申明自己为处理url为 "/belong" 的Controller
 */
@Controller
@RequestMapping("/belong")


/**
 * END
 */
public class BaiKeBelongController {
    private static Logger logger = LoggerFactory.getLogger(BaiKeBelongController.class);
    /**
     * TODO 问题二 引入业务接口 DemoBaikeBelongService
     */
    @Autowired
    private DemoBaikeBelongService demoBaikeBelongService;


    /**
     * END
     */

    /**
     * TODO 问题三 根据号码查询号码归属地信息
     * 1. 处理url为 "/belong/queryBelongInfo"
     * 2. 返回ResponseBody
     */
    @RequestMapping("queryBelongInfo")
    @ResponseBody

    /**
     * END
     */
    public Map<String, Object> queryBelongInfo(@RequestParam String mobile) {

        logger.info("查询号码归属地，手机号码为：" + mobile);
        mobile = StringUtils.trimToNull(mobile);
        /**
         * TODO 问题四 如果手机号为空，返回 MOBILE_NOT_NULL 错误码和消息
         * 提示：查看 CommonOperateCode 和 RespondUtil
         */
        if (mobile == null) {
            return RespondUtil.respondFail(CommonOperateCode.SysCode.MOBILE_NOT_NULL,
                    CommonOperateCode.SysMsg.MOBILE_NOT_NULL);
        }

        /**
         * END
         */

        /**
         * TODO 问题五 调用业务接口 DemoBaikeBelongService 查询手机归属信息
         * 1. 查看被调用方法的申明，了解方法的作用、参数和返回值
         * 2. 业务逻辑：先查看本地（数据库）是否保存手机信息，有则直接返回，否则再查询云端, 都查询不到则返回 QUERY_ERROR 错误码和消息
         */
        BelongInfo belongInfo = demoBaikeBelongService.queryByMobile(mobile);
        if (belongInfo == null) {
            belongInfo = demoBaikeBelongService.queryOverYun(mobile);
        }

        if (belongInfo == null) {
            return RespondUtil.respondFail(CommonOperateCode.SysCode.QUERY_ERROR,
                    CommonOperateCode.SysMsg.QUERY_ERROR);
        }

        /**
         * END
         */
        Map<String, Object> repond= RespondUtil.respondSuccess("", "");
        repond.put("belongInfo",belongInfo);
        return repond;
    }

}
